MongoDB:跨文檔列表中的項目不同 (MongoDB: distinct of items inside a list across documents)


問題描述

MongoDB:跨文檔列表中的項目不同 (MongoDB: distinct of items inside a list across documents)

我的項目位於以下集合中:

{
  "_id": {
      "$oid": "6092037099edca65f29c09d0"
  }, 
  "items": [{"name": "item1"}, {"name": "item2"}, {"name": "item3"}]
}

我想運行一個查詢,返回所有集合中的不同項目。


參考解法

方法 1:

You can use Aggregation Framework and Group Operation to get distinct items.

First, get documents with only one item instead of array of items. Then, group these documents by item. You will get as many groups as unique items in the arrays exist. And, finally, project _id_ field of the groups to the one you need.

Here is an example of Mongo query:

db.collection.aggregate([
{
    $unwind: '$items'
},
{
    $group: {
        _id: "$items"
    }
},
{
    $project: {
        "_id": 0,
        "item": "$_id"
    }
}
])

(by thecheechIgor Amelin)

參考文件

  1. MongoDB: distinct of items inside a list across documents (CC BY‑SA 2.5/3.0/4.0)

#pymongo #mongoDB






相關問題

InvalidDocument:無法編碼對象:<pymongo.cursor.Cursor 對象位於 (InvalidDocument: Cannot encode object: <pymongo.cursor.Cursor object at)

為什麼 PyMongo 將 uuid.uuid1() 編碼為 BSON::Binary? (Why does PyMongo encode uuid.uuid1() as a BSON::Binary?)

一起使用 MongoEngine 和 PyMongo (Use MongoEngine and PyMongo together)

從 mongoDB 中提取信息 (Extracting information from mongoDB)

Pymongo, truy vấn tổng hợp nào trong số các truy vấn tổng hợp này sẽ hoạt động tốt hơn (Pymongo, which of these aggregare query will perform better)

查詢嵌入列表中的數組 (Querying for array in embedded list)

使用pymongo在mongodb中多次查詢單個字段的執行速度 (Querying single field multiple times execution speed in mongodb using pymongo)

使用 pymongo 用 CSV 數據更新 mongodb (update mongodb with CSV data using pymongo)

如何刪除 mongodb 和 pymogo 上的子文檔 (How to delete a subdocument on mongodb and pymogo)

有沒有辦法在 MongoDB 的一個語句中添加遞增的 id? (Is there a way to add an incrementing id in one statement in MongoDB?)

刪除文檔中的父對象 (Remove parent object in document)

MongoDB:跨文檔列表中的項目不同 (MongoDB: distinct of items inside a list across documents)







留言討論